#pragma once

#ifndef AST_h
#define AST_H

#include "Standards.h"
#include "TNode.h"
#include "StmtTable.h"
#include "Schema.h"
#include "Follows.h"

/*! AST Class */
class AST {
	public:
		//! Constructor (takes in the stmtTable and Follows table)
		AST(StmtTable*,Follows*);

		set<int> constTable; //!< Constant table to hold all constants 
		TNode* root; //!< The root node
		unordered_map<INDEX,INDEX> whileStmtTable; //!< Table of while statements
		unordered_map<INDEX,INDEX> ifStmtTable; //!< Table of if statements
		StmtTable* myST; //!< StmtTable pointer
		Follows* myFT; //!< Follows pointer
		
		/*! 
		  A method that inserts constant into constant table
		  \param int the constant to be inserted
		*/
		void insertConst(int);
	private:
};
#endif